package com.controladores.controlvehicular;

import java.util.Calendar;

import com.controladores.controlvehicular.R;
import com.controladores.controlvehicular.basededatos.GestorBaseDatos;
import com.controladores.controlvehicular.comunicacion.ComunicacionTCP;

//import com.google.android.gms.internal.ac;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Typeface;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class InformacionRegistro extends Activity {
	private int espacio = 0;
	private String tipoRegistro = "", NomUsuario, NomZona, idSubcalle, fecha,
			horaActual, placaR;
	TextView placa, color, marca, tiempoR,horaLlegada,tipoMulta, tituloVehiculo,tipoUsuario;
	protected TextView fuenteInfVehiculo;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_informacion_registro);
		Bundle listaRegistroCVR = getIntent().getExtras();
		espacio = listaRegistroCVR.getInt("espacio");
		tipoRegistro = listaRegistroCVR.getString("tipoRe");
		placa = (TextView) findViewById(R.id.edPlaca);
		color = (TextView) findViewById(R.id.edColor);
		marca = (TextView) findViewById(R.id.edMarca);
		horaLlegada = (TextView) findViewById(R.id.edHoraLegada);
		tipoMulta = (TextView) findViewById(R.id.edMulta);
		tituloVehiculo = (TextView) findViewById(R.id.txtVTituloDetalleVehiculo);
		Typeface tipofuenteInfVehiculo = Typeface.createFromAsset(getAssets(),
				"RobotoCondensedRegular.ttf");
		tituloVehiculo.setTypeface(tipofuenteInfVehiculo);
		
		tipoUsuario = (TextView) findViewById(R.id.txtTipoUsuario);
		Button DetenerServicio = (Button) findViewById(R.id.btnDetenerServicio);
		Button Cancelar = (Button) findViewById(R.id.btnCancelarInfo);

		GestorBaseDatos CargarDatosVehiculo = new GestorBaseDatos(
				InformacionRegistro.this);
		CargarDatosVehiculo.abrirBaseDatos();
		String ex = "exonerado";
		String tarj = "tarjeta";
		String recar = "recarga";
		String mul = "multa";
		String datoPlaca, datoColor, datoMarca,datoHoraLlegada,datoTipoMulta;
		placa.setText(" ");
		color.setText(" ");
		marca.setText(" ");
		try {
			if (tarj.compareTo(tipoRegistro) == 0) {
				tipoUsuario.setText("Usuario de Tarjeta");
				datoPlaca = CargarDatosVehiculo.cargarPlacaTarj(espacio);
				placa.setText(datoPlaca);
				datoColor = CargarDatosVehiculo.cargarColorTarj(espacio);
				color.setText(datoColor);
				datoMarca = CargarDatosVehiculo.cargarMarcaTarj(espacio);
				marca.setText(datoMarca);
				datoHoraLlegada=CargarDatosVehiculo.cargarHorallegadaTarjeta(espacio);
				horaLlegada.setText(datoHoraLlegada);
				datoTipoMulta="";
				if(Zona.obtenerMulta(espacio).compareTo("")!=0){
					datoTipoMulta=Zona.obtenerMulta(espacio);
				}else{
					if(Zona2.obtenerMulta(espacio).compareTo("")!=0){
						datoTipoMulta=Zona2.obtenerMulta(espacio);
					}else{
						if(Zona3.obtenerMulta(espacio).compareTo("")!=0){
							datoTipoMulta=Zona3.obtenerMulta(espacio);
						}else{
							if(Zona4.obtenerMulta(espacio).compareTo("")!=0){
								datoTipoMulta=Zona4.obtenerMulta(espacio);
							}
						}
					}
				}
				if (datoTipoMulta.compareTo("null")==0) {
					tipoMulta.setText("Sin Multa");
				}else {
					int intervalo = Integer.parseInt(datoTipoMulta);
					String descripcionMulta = CargarDatosVehiculo.consultarDescrip(intervalo);
					tipoMulta.setText(descripcionMulta);
				}
			}
			if (recar.compareTo(tipoRegistro) == 0) {
				tipoUsuario.setText("Usuario de Recarga");
				datoPlaca = CargarDatosVehiculo.cargarPlacaRecar(espacio);
				placa.setText(datoPlaca);
				datoColor = CargarDatosVehiculo.cargarColorRecar(espacio);
				color.setText(datoColor);
				datoMarca = CargarDatosVehiculo.cargarMarcaRecar(espacio);
				marca.setText(datoMarca);
				datoHoraLlegada=CargarDatosVehiculo.cargarHorallegadaRecarga(espacio);
				horaLlegada.setText(datoHoraLlegada);
			}
			if (ex.compareTo(tipoRegistro) == 0) {
				// actualizarDatosRecarga.setEnabled(false);
				// NuevoRegistro.setEnabled(false);
				// Multa.setEnabled(false);
				tipoUsuario.setText("Exonerado");
				datoPlaca = CargarDatosVehiculo.cargarPlacaEx(espacio);
				placa.setText(datoPlaca);
				datoColor = CargarDatosVehiculo.cargarColorEx(espacio);
				color.setText(datoColor);
				datoMarca = CargarDatosVehiculo.cargarMarcaEx(espacio);
				marca.setText(datoMarca);
				datoHoraLlegada=CargarDatosVehiculo.cargarHorallegadaExonerados(espacio);
				horaLlegada.setText(datoHoraLlegada);
			}
			if (mul.compareTo(tipoRegistro) == 0) {
				tipoUsuario.setText("Usuario Infractor");
				datoPlaca = CargarDatosVehiculo.cargarPlacaMul(espacio);
				placa.setText(datoPlaca);
				datoColor = CargarDatosVehiculo.cargarColorMul(espacio);
				color.setText(datoColor);
				datoMarca = CargarDatosVehiculo.cargarMarcaMul(espacio);
				marca.setText(datoMarca);
				datoHoraLlegada=CargarDatosVehiculo.cargarHorallegadaMulta(espacio);
				horaLlegada.setText(datoHoraLlegada);
				String descripcionMulta=CargarDatosVehiculo.cargarDescripcionMulta(espacio);
				tipoMulta.setText(descripcionMulta);
			}
			CargarDatosVehiculo.close();

		} catch (Exception e) {
			// TODO: handle exception
		}
		Toast.makeText(getBaseContext(), espacio + tipoRegistro,
				Toast.LENGTH_LONG).show();

		DetenerServicio.setOnClickListener(new View.OnClickListener() {
			public void onClick(View view) {
				try {

					GestorBaseDatos detenerServicio = new GestorBaseDatos(
							InformacionRegistro.this);

					detenerServicio.abrirBaseDatos();
					String ex = "exonerado";
					String tarj = "tarjeta";
					String recar = "recarga";

					Toast.makeText(getBaseContext(), " " + espacio,
							Toast.LENGTH_LONG).show();
					if (tarj.compareTo(tipoRegistro) == 0) {
						Toast.makeText(getBaseContext(), "bien tarjeta",
								Toast.LENGTH_LONG).show();
						detenerServicio.eliminarRegistroTarjeta(espacio);
						Zona.detenerServicioDetalleVehiculo(espacio);
						detenerServicio.close();
						Intent aZona = new Intent(InformacionRegistro.this,
								ZonasControl.class);
						startActivity(aZona);

					}
					if (recar.compareTo(tipoRegistro) == 0) {
						// detenerServicio.eliminarRegistroRecargas(espacio);
						// Toast.makeText(getBaseContext(), "bien recarga",
						// Toast.LENGTH_LONG).show();
						enviarTramaConfirmacionVehiculoRecarga("0");
						// refresh();
						// onCreate(null);
						// inicializarZona();
						// this.;
						// detenerServicio.close();
						Intent aZona = new Intent(InformacionRegistro.this,
								ZonasControl.class);
						startActivity(aZona);

					}
					if (ex.compareTo(tipoRegistro) == 0) {
						detenerServicio.eliminarRegistroExonerado(espacio);
						Toast.makeText(getBaseContext(), "bien exonerado",
								Toast.LENGTH_LONG).show();
						detenerServicio.close();
						Intent aZona = new Intent(InformacionRegistro.this,
								ZonasControl.class);
						startActivity(aZona);
						// onCreate(null);
						// inicializarZona();

					}
					// exdetenerServicio.close();
					// detenerServicio.
				} catch (Exception e) {
					// TODO: handle exception
					// enviarTramaConfirmacionVehiculoRecarga("0");
				}

			}
		});

		Cancelar.setOnClickListener(new View.OnClickListener() {
			public void onClick(View view) {
				cancelar();
			}
		});

	}

	private void mostrarMensaje(String mensaje) {
		Toast.makeText(this, mensaje, Toast.LENGTH_LONG).show();
	}

	private void cancelar() {
		// Cerramos la vista actual, por lo que Android mostrara la anterior,
		// sin hacer nada mas.
		Intent aZona = new Intent(InformacionRegistro.this, ZonasControl.class);
		startActivity(aZona);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub

		switch (item.getItemId()) {

		case R.id.menu_NuevoRegistro:
			Intent aRegistroT = new Intent(InformacionRegistro.this,
					RegistroTarjeta.class);
			aRegistroT.putExtra("espacio", espacio);
			aRegistroT.putExtra("tipoRe", tipoRegistro);
			startActivity(aRegistroT);

			break;
		case R.id.menu_Actualizar:
			enviarTramaConfirmacionVehiculoRecarga("1");
			Toast.makeText(getBaseContext(), "Datos enviados", Toast.LENGTH_LONG).show();
			break;
		case R.id.menu_Multa:
			String multaTiempo = "";
			try {
				if(Zona.obtenerMulta(espacio).compareTo("")!=0){
					multaTiempo =Zona.obtenerMulta(espacio);
				}else{
					if(Zona2.obtenerMulta(espacio).compareTo("")!=0){
						multaTiempo=Zona2.obtenerMulta(espacio);
					}else{
						if(Zona3.obtenerMulta(espacio).compareTo("")!=0){
							multaTiempo=Zona3.obtenerMulta(espacio);
						}else{
							if(Zona4.obtenerMulta(espacio).compareTo("")!=0){
								multaTiempo=Zona4.obtenerMulta(espacio);
							}
						}
					}
				}
			} catch (Exception e) {
				// TODO: handle exception
			}

			Toast.makeText(getApplicationContext(), multaTiempo,
					Toast.LENGTH_LONG).show();
			String TipoMultaTiempo = "TipoMultaTiempo";
			Intent aMulta = new Intent(InformacionRegistro.this, RegistroMulta.class);
			aMulta.putExtra("espacio", espacio);
			aMulta.putExtra("tipoRe", tipoRegistro);
			aMulta.putExtra("multaT", multaTiempo);
			aMulta.putExtra("TipoMultaTiempo", TipoMultaTiempo);
			startActivity(aMulta);

			break;

		}
		return super.onOptionsItemSelected(item);

	}

	@Override
	public boolean onPrepareOptionsMenu(Menu menu) {
		// TODO Auto-generated method stub
		String ex = "exonerado";
		String tarj = "tarjeta";
		String recar = "recarga";
		String mulR = "recargamulta";
		String mul = "multa";
		menu.clear();
		try {
			if (tarj.compareTo(tipoRegistro) == 0) {
				if (Zona.obtenerMulta(espacio).compareTo("null") == 0) {
					menu.clear();
					getMenuInflater().inflate(R.menu.detalle_vehiculo_menu4, menu);
					// menu.setGroupEnabled(3, false);
				} else {
					// menu.setGroupEnabled(1, false);
					menu.clear();
					getMenuInflater().inflate(R.menu.detalle_vehiculo_menu3, menu);
				}
				//getMenuInflater().inflate(R.menu.detalle_vehiculo_menu4, menu);
			}
			if (recar.compareTo(tipoRegistro) == 0) {
				getMenuInflater().inflate(R.menu.detalle_vehiculo_menu2, menu);
			}
			if (mulR.compareTo(tipoRegistro) == 0) {
				menu.clear();
			}
			if (ex.compareTo(tipoRegistro) == 0) {
				menu.clear();
			}
			if (mul.compareTo(tipoRegistro) == 0) {
				getMenuInflater().inflate(R.menu.detalle_vehiculo_menu3, menu);
			}


		} catch (Exception e) {
			// TODO: handle exception
		}
		//menu.clear();
		//getMenuInflater().inflate(R.menu.detalle_vehiculo_menu2, menu);
		//if (Zona.obtenerMulta(espacio).compareTo("null") == 0) {
		//	menu.clear();
		//	getMenuInflater().inflate(R.menu.detalle_vehiculo_menu4, menu);
		//	// menu.setGroupEnabled(3, false);
		//} else {
		//	// menu.setGroupEnabled(1, false);
		//	menu.clear();
		//	getMenuInflater().inflate(R.menu.detalle_vehiculo_menu3, menu);
		//}
		
		
		
		return true;
	}

	// @Override
	// public boolean onCreateOptionsMenu(Menu menu) {
	// Inflate the menu; this adds items to the action bar if it is present.
	// getMenuInflater().inflate(R.menu.detalle_vehiculo, menu);
	// return true;

	// }

	public void enviarTramaConfirmacionVehiculoRecarga(String confirmacion) {
		GestorBaseDatos obtener = new GestorBaseDatos(InformacionRegistro.this);
		obtener.abrirBaseDatos();
		NomUsuario = obtener.cargarNombreUsuario(espacio);
		NomZona = obtener.cargarNombreZona(espacio);
		idSubcalle = obtener.cargarIdSubcalle(espacio);
		fecha = obtener.cargarFecha(espacio);
		Calendar c = Calendar.getInstance();
		horaActual = c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE);

		placaR = obtener.cargarPlaca(espacio); // ya esta placa
		//codigoRecarga = obtener.cargarCodigoRecarga(espacio);
		obtener.close();
		String valor = "";

		ComunicacionTCP comunicacion = new ComunicacionTCP();
		valor = comunicacion.gestionarConexionConfirmacionVehiculoRecarga(
				confirmacion, NomUsuario, NomZona, idSubcalle, fecha,
				horaActual, placaR);
		if (valor.compareToIgnoreCase("e") == 0) {
			Intent aZona = new Intent(InformacionRegistro.this, ZonasControl.class);
			startActivity(aZona);
			mostrarMensaje("Algo ha ido mal en la comunicación.");

		}
		if (valor.compareToIgnoreCase("1") == 0) {
			if (confirmacion.compareToIgnoreCase("1")==0) {
				Intent aZona = new Intent(InformacionRegistro.this, ZonasControl.class);
				startActivity(aZona);
				mostrarMensaje("Los datos se enviaron correctamente.");
			}
			if (confirmacion.compareToIgnoreCase("0")==0) {
				mostrarMensaje("Los datos se enviaron correctamente.");
				try {
					GestorBaseDatos detenerServicio = new GestorBaseDatos(
							getBaseContext());
					detenerServicio.abrirBaseDatos();
					detenerServicio.eliminarRegistroRecargas(espacio);
					detenerServicio.close();
					Intent aZona = new Intent(InformacionRegistro.this, ZonasControl.class);
					startActivity(aZona);
					Toast.makeText(getApplicationContext(), "Los Datos fueron enviados ", Toast.LENGTH_LONG).show();
				} catch (Exception e) {
					Toast.makeText(getApplicationContext(), "Los Datos no fueron enviados ", Toast.LENGTH_LONG).show();
				}
				mostrarMensaje("Los datos se enviaron correctamente.");
			}
	
		}
	}
}
